import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import javax.ejb.EJB;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import be.ipl.diavoloz.dao.DeDao;
import be.ipl.diavoloz.dao.DemonsDao;
import be.ipl.diavoloz.dao.JoueurDao;
import be.ipl.diavoloz.dao.PartieDao;
import be.ipl.diavoloz.dao.TourDao;
import be.ipl.diavoloz.modele.Joueur;
import be.ipl.diavoloz.usecases.GestionConnexion;
import be.ipl.diavoloz.usecases.GestionInscription;


public class GestionConnexionImplTest {

	private static GestionConnexion gc;
	private static GestionInscription gi;
	private static Joueur j1 = new Joueur("pseudo1", 1, "email1", "mdp1");
	private Joueur j2 = new Joueur("pseudo2", 2, "email2", "mdp2");
	
	@EJB
	JoueurDao joueurDao;
	@EJB
	PartieDao partieDao;
	@EJB
	DemonsDao demonDao;
	@EJB
	DeDao deDao;
	@EJB
	TourDao tourDao;
	
	
	
	@BeforeClass
	public static void setUpBeforeClass() {
		try {
			Context jndi = new InitialContext();
			gc = (GestionConnexion) jndi.lookup("ejb:diavoloZ_EAR/diavoloZ_EJB/GestionConnexionImpl!be.ipl.diavoloz.usecases.GestionConnexion");
			gi = (GestionInscription) jndi.lookup("ejb:diavoloZ_EAR/diavoloZ_EJB/GestionInscriptionImpl!be.ipl.diavoloz.usecases.GestionInscription");
		} catch (NamingException e) {
			e.printStackTrace();
		}
	}
	
	@Before
	public void before(){
		gi.sinscrire(j1.getPseudo(), j1.getEmail(), j1.getAge(), j1.getMdp());
	}
	
	@After
	public void after(){
	}

	@Test
	public void testAuthentifierJoueur() {

		assertTrue(gc.authentifierJoueur(j1.getPseudo(), j1.getMdp()));
		assertFalse(gc.authentifierJoueur(j1.getPseudo(), j2.getMdp()));
		assertFalse(gc.authentifierJoueur(j2.getPseudo(), j1.getMdp()));
	}
	
	@Test
	public void testVerifierJoueur(){
		assertEquals(j1.getEmail(), gc.verifierJoueur(j1.getPseudo()).getEmail());
	}
	

}
